package com.urick.statemachine;

/**
 * Design Theories: 状态上下文
 * <a href=""></a>
 *
 * @author Rick 2023/4/4 16:11
 * Email: rickwork@163.com
 * Wechat: yy3076815642
 * QQ: 3076815642
 * @since 1.0
 */
public interface IStateContext<S,E> {

    /**
     * @return 获取上下文当前状态
     */
    S getState();

    /**
     * @return 获取上下文当前需要触发的事件
     */
    E getEvent();

    /**
     * 设置当前上下文状态
     *
     * @param currentState state
     */
    IStateContext<S,E> setState(String currentState);

    /**
     * 设置当前上下文，待触发事件
     *
     * @param currentEvent event
     */
    IStateContext<S,E> setEvent(String currentEvent);
}
